//日期选择控件扩展
$.extend({
	datepicker : function() {
		var obj = $(".datepicker");
		obj.click(function() {
			var config = {
			// dateFormat: "yyyy-MM-dd"//, //日期格式，默认年年年年-月月-日日
			// minDate: "", //最小日期，默认不限制
			// maxDate: "", //最大日期，默认不限制
			// dateRange: 0, //日期区间，默认不限制
			// group: {} //一组日期区间内的另一个时间选择框{"startId":"", "endId":""}

			};
			var dateOption = {
				yearMonth : {
					"dateFormat" : "yyyy-MM"
				}, // 年/月格式
				doubleCalendar : {
					doubleCalendar : true,
					dateFmt : 'yyyy-MM-dd'
				}, // 双月日历格式：
				readOnly : {
					isShowClear : false,
					readOnly : true
				}, // 日期选择框只读：
				dateFormatTime : {
					"dateFormat" : "yyyy-MM-dd HH:mm:ss"
				}, // 带时间的日期格式
				maxDateNotToday : {
					"maxDate" : "%y-%M-%d"
				}, // 最大日期不大于今天
				minDateToNDay : {
					"minDate" : "%y-%M-{%d-3}"
				}
			};
			if ($(this).attr("option")) {
				var this_option = $(this).attr("option");
				if (this_option == "yearMonth") {
					$.extend(config, dateOption.yearMonth);
				} else if (this_option == "doubleCalendar") {
					$.extend(config, dateOption.doubleCalendar);
				} else if (this_option == "readOnly") {
					$.extend(config, dateOption.readOnly);
				} else if (this_option == "dateFormatTime") {
					$.extend(config, dateOption.dateFormatTime);
				} else if (this_option == "maxDateNotToday") {
					$.extend(config, dateOption.maxDateNotToday);
				} else if (this_option == "minDateToNDay") {
					var dayNum = $(this).attr("dayNum");
					var temp = {
						"minDate" : "%y-%M-{%d-'" + dayNum + "'}"
					};
					dateOption.minDateToNDay = temp;
					$.extend(config, dateOption.minDateToNDay);
				} else if (this_option == "start-end") {
					var op;
					op = JSON.parse($("input[option='start-end']").eq(0).attr(
							"group"));
					var temp = {
						"group" : {
							"startId" : op.group.startId,
							"endId" : op.group.endId
						}
					};
					dateOption.group = temp;
					$.extend(config, dateOption.group);
				} else if (this_option == "start-auto-end") {
					var op;
					op = JSON.parse($("input[option='start-auto-end']").eq(0)
							.attr("group"));
					var temp = {
						"group" : {
							"startId" : op.group.startId,
							"endId" : op.group.endId,
							"showNext" : true
						}
					};
					dateOption.group = temp;
					$.extend(config, dateOption.group);
				} else if (this_option == "limit-n-day") {
					var dayNum = $("input[option='limit-n-day']").eq(0).attr(
							"daynum");
					var getId1 = $("input[option='limit-n-day']").eq(0).attr(
							"id");
					var getId2 = $("input[option='limit-n-day']").eq(1).attr(
							"id");
					var temp = {
						"dateRange" : dayNum,
						"group" : {
							"startId" : getId1,
							"endId" : getId2
						}
					};
					$.extend(config, temp);
				}
			}
			if (config.group) {
				var startDateId = config.group.startId;
				var endDateId = config.group.endId;
				// 限制日期区间
				if (!config.dateRange) {
					if ($(this).attr("id") == endDateId) {
						config.minDate = config.minDate || "#F{$dp.$D('"
								+ startDateId + "')}";
					} else {
						config.maxDate = config.maxDate || "#F{$dp.$D('"
								+ endDateId + "')}";
					}
				} else {
					if ($(this).attr("id") == endDateId) {
						config.minDate = config.minDate || "#F{$dp.$D('"
								+ startDateId + "')}";
						config.maxDate = config.maxDate || "#F{$dp.$D('"
								+ startDateId + "',{d: + " + config.dateRange
								+ "})}";
					} else {
						config.minDate = config.minDate || "#F{$dp.$D('"
								+ endDateId + "',{d: - " + config.dateRange
								+ "})}";
						config.maxDate = config.maxDate || "#F{$dp.$D('"
								+ endDateId + "')}";
					}
				}

				// 自动弹出结束日期的选择框
				if (config.group.showNext) {
					config.onpicked = function() {
						$dp.$(endDateId).click();
					};

					$("#" + endDateId).focus(function() {
//						WdatePicker({
//							dateFmt : config.dateFormat,
//							minDate : "#F{$dp.$D('" + startDateId + "')}",
//							maxDate : config.maxDate,
//							readOnly : config.readOnly,
//							onpicked : config.onpicked,
//							doubleCalendar : config.doubleCalendar
//						});
					});
				}
			}
			
			if($(this).attr("dateFormat")){
				config.dateFormat = $(this).attr("dateFormat");
			}
			
			WdatePicker({
				dateFmt : config.dateFormat,
				minDate : config.minDate,
				maxDate : config.maxDate,
				readOnly : config.readOnly,
				onpicked : config.onpicked,
				doubleCalendar : config.doubleCalendar
			});
		});

	}
});
/*$.datepicker();*/